home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / c / genmo112.lha / GTB-Modula / GenModula.dok < prev    next >
Encoding:
Text File  |  1993-09-28  |  6.0 KB  |  147 lines

  1. GenModula 1.12 - Modula 2 Quelltextgenerator zur GadToolsBox
  2. ------------------------------------------------------------
  3.  
  4. Dieses Programm stammt direkt vom Programm OG, dem Oberon
  5. Quelltextgenerator von Thomas Igracki und Kai Bolay ab.
  6.  
  7. Für weitere Informationen, und der Entwicklung von OG.mod, sehen Sie
  8. bitte in der Dokumentation zum Programm nach:
  9. » GadToolsBox's great Oberon Source Generator
  10. » ===========================================
  11. »
  12. » This is the second release of the external Oberon source generator for
  13. » GadToolsBox 2.x.  Please use it instead of the built in source generator
  14. » because some the internal version is buggy and will not be updated any more.
  15. »
  16. » Let's explan the history of generating Oberon source with GadToolsBox:
  17. » I (Kai Bolay) thougt that it would be a good idea that GadToolsBox supports
  18. » Oberon so I changed Jan van den Baard's C generator "GenC.c" to
  19. » "GenOberon.c" and asked Jan to add it to GTB. With GTB 2.0 Jan came up with
  20. » the idea of external source generators. Jan helped me (in fact he did all
  21. » the work! Thanks, Jan!) to make "GenOberon.c" a standalone program. Now
  22. » Thomas Igracki did the great job of converting to C program "GenOberon.c"
  23. » to the Oberon program "OG.mod". I did some minor modifications to "OG.mod"
  24. » and released it.
  25.  
  26. Dieses Programm macht nahezu das gleiche wie OG. Nur wenige Punkte
  27. sind hinzugekommen und Fehler beseitigt worden. Trotz allem ist der
  28. gesamte Quelltext neu strukturiert und in einzelne Module aufgeteilt
  29. worden. In der Definitionsdatei sind nur sehr wenige Objekte
  30. aufgeführt, in der Zukunft könnte hier eine Erweiterung stattfinden.
  31.  
  32.  
  33. Aufruf:
  34.   GenModula: NAME/A,TO=AS/A,RASTER/S,UNDERMOUSE/S,NODEF/S
  35.  
  36. NAME
  37.   Bereits erstellte GadToolsBox Schnittstellendatei.
  38.  
  39. TO
  40.   Basisname für die zu erzeugenden Module und Dateien. Dem Name darf
  41.   ein Pfad vorangestellt sein.
  42.  
  43. RASTER
  44.   Bool'sches Argument um einen gefüllten Fensterhintergrund zu
  45.   erhalten. Das geschieht jedoch nur, wenn die Fenster jeweils
  46.   Bevelboxen enthalten.
  47.   
  48. UNDERMOUSE
  49.   Die Fenster werden an der aktuellen Mausposition geöffnet.
  50.  
  51. NODEF
  52.   Erzeugung einer Definitionsdatei mit der Endung "nodef". Diese Option
  53.   ist für Sie hilfreich, wenn Sie eine bereits bestehende Oberfläche
  54.   überarbeiten. Somit brauchen Sie das Modul, das die Oberfläche
  55.   benutzt, nicht neu zu übersetzen. Weiterhin können Sie dadurch die
  56.   neue Definitionsdatei, mit Suffix "nodef", gegen die alte vergleichen.
  57.  
  58.  
  59. Schnittstelle:
  60.   Ich führe hier nur einige, wenige Hinweise zu den erzeugten
  61.   Schnittstellendateien auf. Bitte schauen Sie auch in den
  62.   Definitionsdateien nach.
  63.  
  64.   Die Prozeduren zum Anlegen und Entfernen der Screens, Windows und
  65.   Gadgets werden, in Übereinstimmung mit der GadTools.Library, mit
  66.   CreateXXX und FreeXXX bezeichnet. Dies sollte Ihnen anzeigen, daß
  67.   diese Prozeduren mehr beinhalten als einfaches Öffnen oder
  68.   Schließen von Fenstern oder Schirmen.
  69.   Alle Prozeduren umfassen den Namen des aktuellen Projektes (siehe
  70.   auch GadToolsBox).
  71.   Zu den Ergebniswerten: der Rückgabewert 0 verweist auf einen
  72.   erfolgreichen Aufruf, die anderen Werte weisen auf Fehler hin,
  73.   für die speziellen Werte sehen Sie bitte im erzeugten Quelltext nach.
  74.  
  75.   Screen:
  76.     PROCEDURE CreateTestScreen  (    pubScreenName    :ARRAY OF CHAR) :CARDINAL;
  77.     PROCEDURE FreeTestScreen;
  78.  
  79.     CreateXXXScreen hat eventuell ein Argument, dies hängt vom
  80.     gewählten Typ ab.
  81.  
  82.   Gadgets:
  83.     PROCEDURE CreateListGadgets () :CARDINAL;
  84.  
  85.     Diese Prozedur können Sie benutzen um Gadgets zu erzeugen bevor
  86.     das Fenster geöffnet wird. Die Gadgetliste wird immer implizit mit
  87.     dem Aufruf FreeXXXWindow freigeben.
  88.  
  89.   Windows:
  90.     PROCEDURE CreateListWindow  (    createGadgets    :BOOLEAN) :CARDINAL;
  91.     PROCEDURE FreeListWindow;
  92.     PROCEDURE RefreshListWindow;
  93.  
  94.     Die Erzeugung eines Fenster umfasst alle notwendigen Schritte.
  95.     Geben Sie das Argument createGadgets = FALSE nur genau vor
  96.     CreateXXXWindow an! Nach dem Erzeugen ist das Fenster bereits
  97.     vollständig gezeichnet.
  98.  
  99.     Immer, wenn Sie eine IDCMP-Nachricht refreshWindow bekommen,
  100.     sollten Sie RefreshXXXWindow aufrufen. Schließen Sie diesen Aufruf
  101.     NIE mit GTBeginRefresh ... GTEndRefresh ein, dies geschieht
  102.     bereits intern! Da Sie ja die GadToolsBox benutzen, sollte keine
  103.     Ausgabe notwendig sein um den Fensterinhalt zu erneuern.
  104.  
  105.   Um Ihnen den Zugriff auf Gadgets, Menüs oder Fenster zu ermöglichen
  106.   können Sie die in der Definitionsdatei angegebenen Zeiger BENUTZEN.
  107.   ÄNDERN Sie diese aber nicht! Beachten Sie, daß Sie unbedingt die
  108.   Konstanten, und NICHT deren Werte, benutzen um auf die Objekt zuzugreifen.
  109.  
  110.   Wenn Sie ein GetFile-Gadget benutzen möchten, müssen Sie das
  111.   Programm mit einer zusätzlichen Option "l" binden. Geben Sie dafür
  112.     -lkompletterPfad/bases.o  -lkompletterPfad.o   ProgramName
  113.   ein. Seien Sie hiermit an das nicht anwesende Leerzeichen nach der
  114.   l-Option erinnert,
  115.  
  116.   
  117. Zum Unterschiedlichen Verhalten vom Programm GenModula zu OG (Oberon
  118. Generator):
  119. Als erstes hatte ich eine eigene Definitiondatei für Modula zu
  120. erzeugen. Meiner Meinung nach ist das ein großer Fortschritt gegenüber
  121. Oberon, da für Sie weder die Notwendigkeit besteht die gesamte
  122. Definitionsdatei zu überprüfen noch die Schnittstellendatei mit einem
  123. Hilfsprogramm erzeugt werden muß. (Das Hilfsprogramm gehört zwar zum
  124. Oberon-System, das nützt jedoch keinem Modula-Anwender.)
  125.  
  126. Weiterhin brauchen Sie sich um die korrekte Darstellung der Fenster
  127. nicht zu kümmern: weder wenn ein Fenster geöffnet wird noch danach.
  128. Rufen Sie einfach RenderXXXWindow auf, wenn Sie eine
  129. refreshWindow-Nachricht bekommen. Die Behandlung der
  130. Fensterdarstellung und Erneuerung ist somit eine große Verbesserung im
  131. Vergleich zu OG. Im Besonderen, wenn die RASTER-Option benutzt wird,
  132. wird die Darstellung in der richtigen Rehienfolge vorgenommen. Die
  133. Gadgets werden auch nur ein einziges mal gezeichnet.
  134.  
  135.  
  136. Falls Sie Vorschläge oder Fragen haben oder auch Fehler finden
  137. sollten, bin ich zu erreichen unter:
  138.  
  139. Reiner B. Nix
  140. Snail Mail:
  141.   Geranienhof 2
  142.   50769 Köln Seeberg
  143.   Germany
  144.  
  145. EMail:
  146.   UseNet: rbnix@pool.informatik.rwth-aachen.de
  147.